package cn.lili.modules.promotion.entity.dto.search;

import cn.lili.common.vo.PageVO;
import cn.lili.modules.promotion.entity.vos.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

@EqualsAndHashCode(callSuper = true)
@Data
public class BoxSearchParams extends PageVO {

    /**
     * 用户ID
     */
    private String userId;

    /**
     * 用户名
     */
    private String username;

    /**
     * 盲盒名称
     */
    private String mhName;

    /**
     * 盲盒编号
     */
    private String mhNo;

    /**
     * 盲盒ID
     */
    private String mhId;

    /**
     * 中奖状态
     */
    private Integer winningRecordStatus;

    /**
     * 奖券号码
     */
    private String lotteryTicketNo;

    /**
     * 奖券ID
     */
    private String lotteryTicketId;

    /**
     * 中奖商品
     */
    private String goodsName;

    /**
     * 中奖商品ID
     */
    private String goodsId;

    /**
     * 下单时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date orderTime;
    /**
     * 下单时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startOrderTime;
    /**
     * 下单时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endOrderTime;

    /**
     * 开奖时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date drawingTime;
    /**
     * 开奖时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startDrawingTime;
    /**
     * 开奖时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endDrawingTime;

    /**
     * 回收时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date recycleTime;

    /**
     * 回收原因
     */
    private String recycleRemark;

    /**
     * 方案id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private String optionId;

    /**
     * 方案名
     */
    private String optionName;

    /**
     * 奖品状态：1启用，2关闭
     */
    private Integer prizeStatus;

    /**
     * 购买数量
     */
    private Integer buyCount;

    /**
     * 优惠比例
     */
    private BigDecimal preferentialRatio;

    /**
     * 方案状态,1启用，2禁用
     */
    private Integer optionStatus;

    /**
     * 归属盲盒
     */
    private String boxflId;

    /**
     * 商品图片
     */
    private String goodsImages;

    /**
     * 商品库存
     */
    private Integer goodsStock;

    /**
     * 商品价值
     */
    private BigDecimal goodsPirce;

    /**
     * 运费
     */
    private BigDecimal deliveryFee;


    /**
     * 标签:1=高级,2=稀有 ,3=史诗,4=传说
     */
    private Integer tag;

    /**
     * 价值幸运币
     */
    private BigDecimal luckycoin;

    /**
     * 商品描述
     */
    private String ms;

    /**
     * 商品概率
     */
    private BigDecimal probability;

    /**
     * 奖券状态：1未中奖，2已中奖，3作废
     */
    private String lotteryTicketStatus;


    /**
     * 活动状态：1 待开奖，2已开奖
     */
    private Integer activeState;

    /**
     * 开始创建时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startCreateTime;
    /**
     * 结束创建时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endCreateTime;

    /**
     * 商品RMB价格
     */
    private BigDecimal pirce;

    /**
     * 商品幸运币价格
     */
    private BigDecimal cPirce;

    /**
     * 库存
     */
    private Integer stock;

    /**
     * 商品图片
     */
    private String goodImages;

    /**
     * 商品详情
     */
    private String gooddetails;

    /**
     * 运费
     */
    private BigDecimal freight;

    /**
     * 类型:0=实物商品,1=虚拟商品
     */
    private Integer type;
    /**
     * 物流单号
     */
    private String logisticsTrackingNumber;
    /**
     * 订单号
     */
    private String orderSn;
}
